<!-- Page header -->
<div class="page-header d-print-none">
  <div class="container-xl">
    <div class="row g-2 align-items-center">
      <div class="col">
        <h2 class="page-title">
          发新贴
        </h2>
      </div>
    </div>
  </div>
</div>
<!-- Page body -->
<div class="page-body">
  <div class="container-xl">
    <div class="card">
      <div class="card-body">
        <div class="mb-3">
          <label class="form-label required">板块</label>
          <select class="form-select" id="article_post_borad">
            <!-- 板块选项将通过AJAX动态加载 -->
          </select>
        </div>
        <div class="mb-3">
          <label class="form-label"><strong>标题</strong></label>
          <input id="article_post_title" type="text" class="form-control" placeholder="请输入标题">
        </div>
        <div class="mb-3" style="height: 680px;">
          <label class="form-label"><strong>内容</strong></label>
          <div id="edit-article">
            <!-- textarea也是一个表单控件，当在editor.md中编辑好的内容会关联这个文本域上 -->
            <textarea id="article_post_content" style="display: none;"></textarea>
          </div>
        </div>
      </div>
      <div class="card-footer bg-transparent mt-auto">
        <div class="btn-list justify-content-end">
          <a id="article_post_submit" href="javascript:void(0);" class="btn btn-primary">
            <svg xmlns="http://www.w3.org/2000/svg" class="icon" width="24" height="24" viewBox="0 0 24 24" 
              stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
              <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
              <path d="M5 12l5 5l10 -10"></path>
            </svg>
            发 布
          </a>
        </div>
      </div>
    </div>
  </div>
</div>

<!-- 初始化编辑器 -->
<script type="text/javascript">
  $(function () {
    // 加载板块数据并填充下拉框
    loadBoardOptions();
    
    var editor = editormd("edit-article", {
      width: "100%",
      height: "100%",
      // theme : "dark",
      // previewTheme : "dark",
      // editorTheme : "pastel-on-dark",
      codeFold: true,
      markdown : '', // 处理编辑区内容
      //syncScrolling : false,
      saveHTMLToTextarea: true,    // 保存 HTML 到 Textarea
      searchReplace: true,
      watch : true,                    // 关闭实时预览
      htmlDecode: "style,script,iframe|on*",            // 开启 HTML 标签解析，为了安全性，默认不开启    
      // toolbar  : false,             //关闭工具栏
      // previewCodeHighlight : false, // 关闭预览 HTML 的代码块高亮，默认开启
      emoji: true,
      taskList: true,
      tocm: true,         // Using [TOCM]
      tex: true,                     // 开启科学公式TeX语言支持，默认关闭
      // flowChart: true,               // 开启流程图支持，默认关闭
      // sequenceDiagram: true,         // 开启时序/序列图支持，默认关闭,
      placeholder: '开始创作...',     // 占位符
      path: "./dist/editor.md/lib/"
    });

    // ================== 处理发贴按钮事件 =======================
    $('#article_post_submit').click(function () {
      let boardIdEl = $('#article_post_borad');
      let titleEl = $('#article_post_title');
      let contentEl = $('#article_post_content');
      // 非空校验
      if (!titleEl.val()) {
        titleEl.focus();
        // 提示
        $.toast({
            heading: '提示',
            text: '请输入帖子标题',
            icon: 'warning'
        });
        return;
      }
      if (!contentEl.val()) {
        // 提示
        $.toast({
            heading: '提示',
            text: '请输入帖子内容',
            icon: 'warning'
        });
        return;
      }

      // 构造帖子对象
      let postData={
        boardId:boardIdEl.val(),
        title:titleEl.val(),
        content:contentEl.val()
      };

      // 提交, 成功后调用changeNavActive($('#nav_board_index'));回到首页并加载帖子列表
      // contentType: 'application/x-www-form-urlencoded'
      $.ajax({
        type:'post',
        url:'article/create',
        contentType: 'application/x-www-form-urlencoded',
        data:postData,
        success:function(res){
          if(res.code==0){
            //成功 刷新页面到index页面 查看结果
            jQuery.toast({
                heading:'成功',
                text: '发帖成功',
                icon:'success'
              })
            changeNavActive($('#nav_board_index'));
          }else{
            //提示信息
           jQuery.toast({
                heading:'警告',
                text: res.message,
                icon:'warning'
              })
          }
        },
        error:function(){
          jQuery.toast({
                heading:'错误',
                text: '访问错误 请联系管理员解决',
                icon:'error'
              })
        }
      });
    });
  });

  // 加载板块数据并填充下拉框
  function loadBoardOptions() {
    // 清空原有选项
    $('#article_post_borad').empty();
    
    // 发送AJAX请求获取板块列表
    $.ajax({
      type: 'get',
      url: 'board/topList',
      success: function(res) {
        if (res.code == 0) {
          // 获取成功，添加选项
          const boards = res.data;
          if (boards && boards.length > 0) {
            // 添加默认选项
            $('#article_post_borad').append('<option value="" disabled>请选择板块</option>');
            
            // 遍历添加板块选项
            boards.forEach(function(board) {
              // 只添加未禁用的板块
              if (board.state === 0) {
                $('#article_post_borad').append(
                  '<option value="' + board.id + '">' + board.name + '</option>'
                );
              }
            });
            
            // 默认选中第一个选项
            $('#article_post_borad option:eq(1)').prop('selected', true);
          } else {
            // 如果没有板块，显示提示
            $('#article_post_borad').append('<option value="" disabled selected>暂无可用板块</option>');
            
            // 提示用户
            $.toast({
              heading: '提示',
              text: '暂无可用板块，请联系管理员添加板块',
              icon: 'warning'
            });
          }
        } else {
          // 加载失败
          $.toast({
            heading: '警告',
            text: res.message || '加载板块失败',
            icon: 'warning'
          });
        }
      },
      error: function() {
        // 网络错误
        $.toast({
          heading: '错误',
          text: '网络错误，无法加载板块信息',
          icon: 'error'
        });
      }
    });
  }
</script>


</body>

</html>